CUDA 커널 개발은 다음을 정의하는 것으로 시작됩니다: 커널는 병렬적으로 실행되도록 설계된 특수한 C++ 함수로, NVIDIA GPU의 막대한 코어 수를 통해 병렬로 실행될 수 있도록 설계되어 있습니다. 이 함수들은 CUDA 프로그래밍 모델에서 작업의 기본 단위이며, 시리얼 호스트 로직이 대규모 병렬 장치 실행으로 전환되는 다리 역할을 합니다.
1. __global__ 지정자
그리고 __global__ 선언 지정자는 컴파일러가 GPU용 코드를 생성하면서도 함수 진입점이 CPU에 보이게 유지하도록 지시하는 필수적인 API 지정자입니다. 호스트에서 호출할 수 있는 GPU에서 실행되는 함수는 커널이라고 부릅니다.
2. 실행 환경
커널은 스트리밍 멀티프로세서(SMs)에 배포되고 실행됩니다. SM은 병렬 스레드 수백 개를 관리하는 니비디아 GPU 내부의 주요 계산 엔진입니다. 각각의 SM은 스레드 블록을 처리하고 이를 처리 코어에 스케줄링합니다.
문법 규칙: 커널은 반드시 void을 반환해야 합니다. 호스트와 비동기적으로 작동하기 때문에 직접 값을 CPU로 반환할 수 없으며, 결과를 할당된 디바이스 메모리에 다시 써야 합니다.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>